class Solution {
    public:
        int findMinArrowShots(vector<vector<int>>& points) 
        {
            int n=points.size();
            sort(points.begin(),points.end());
            int ret=1;
            //记录交集 用交集去和下一个区间比较 如果有交集 那么这几个集合就是重复交集
            int left=points[0][0];
            int right=points[0][1];
            for(int i=1;i<n;i++)
            {
                int a=points[i][0];
                int b=points[i][1];
                if(a<=right)
                {
                    //有重叠区间找到交集
                    left=max(a,left);
                    right=min(b,right);

                }
                else
                {
                    //此时没有重叠区间 我们要进行射箭
                    ret++;
                    left=a;
                    right=b;
                }
            }
            return ret;
        }
    };